#ifndef STREAMDATA_H
#define STREAMDATA_H


typedef struct
{
    int size;              // 数据缓存区的长度
    char *data;            // 保存数据
    int insertindex;       // 插入位置
    int readindex;         // 读取位置
    int (*handler)(void*,char[]);       // 指令处理函数
    int (**conditions)(void*,char[]);    // 判断条件数量
    int conditionsize; // 指令处理条件
    int count;             // 处理指令的数量记录
    int ignorecount;
    int error;             // 错误记录
} STREAMDATA;

typedef int (*HANDLER)(void*,char[]);  // ָ指令处理函数
typedef int (*CONDITION)(void*,char[]); // ָ指令判断条件


int streamdatainit(STREAMDATA *streamdata, int cachesize, int conditionsize);
int streamdataaddhandle(STREAMDATA *streamdata, HANDLER handler);
int streamdataaddcondition(STREAMDATA *streamdata, CONDITION condition);
int streamdataadddata(STREAMDATA *streamdata, char *data, int length);
int streamdatahandle(STREAMDATA *streamdata);

#endif